package com.mine.frame.common.net.listener

import com.mine.frame.common.net.entity.RespondBean
import com.mine.frame.common.utils.DisposableUtils
import com.mine.frame.common.net.utils.NetErrorUtils
import io.reactivex.rxjava3.disposables.Disposable

/**
 * company 广东玛格家居有限公司
 * @author smoker
 * @Date 2021/11/12
 * Description:自定义响应监听
 */
abstract class ResponseListener<T> {
    fun onStart(tag: Any, disposable: Disposable) {
        //全局Disposable管理，Activity、Fragment 销毁的时候会自动结束这个订阅
        DisposableUtils.instance.add(tag, disposable)
    }

    /**
     * 响应成功回调：当服务器返回的code 为 200 ，201 ，其余转交给error处理
     */
    abstract fun onSuccess(result: RespondBean<T>)

    fun onError(error: Throwable) {
        NetErrorUtils.showError(error)
    }

    fun onFinish() {}
}